// 深拷贝函数封装1
export function deepCopy(obj) {
  // 根据obj的类型判断是新建一个数组还是对象
  let newObj = Array.isArray(obj)? [] : {};
  // 判断传入的obj存在，且类型为对象
  if (obj && typeof obj === 'object') {
    //eslint-disable-next-line no-undef
    for(let key in obj) {
      // 如果obj的子元素是对象，则进行递归操作
      //eslint-disable-next-line no-undef
      if(obj[key] && typeof obj[key] ==='object') {
        //eslint-disable-next-line no-undef
        newObj[key] = deepCopy(obj[key])
      } else {
        // // 如果obj的子元素不是对象，则直接赋值
        //eslint-disable-next-line no-undef
        newObj[key] = obj[key]
      }
    }
  }
  return newObj // 返回新对象
}

export function getCache(key) {
  let {value, expire} = JSON.parse(localStorage.getItem(key)) || {}
  if(expire && expire > +new Date()){
    return value
  }else if(expire && expire < +new Date()){
    if(value){
      localStorage.removeItem(key)
    }
    return null
  }else{
    return value || null
  }
}


export function setCache(key, value, expire) {
  localStorage.setItem(key, JSON.stringify({
    value,
    expire: expire ? +new Date(expire) : 0
  }))
}


export function isDef(val) {
  return !!val && Object.keys(val).length > 0
}
